
//################################################################################
//Funcoes utilizadas na TableTag
function doormanTableTagMudaVisibilidadeDiv(conteudo,control,rootDiv){
	var divVar = document.getElementById(conteudo);
	var controlVar = document.getElementById(control);		
	if(divVar.style.display == 'none'){
		divVar.style.display = "";
		controlVar.innerHTML = "<img class='doormanTableVisibilidadeImg' border='0' src='images/table_hide.gif' onclick='doormanTableTagMudaVisibilidadeDiv(\""+conteudo+"\",\""+control+"\",\""+rootDiv+"\");'>";
		controlVar.innerHTML += "<img class='doormanTableFecharImg' border='0' src='images/table_close.gif' onclick='doormanTableTagFecharDiv(\""+rootDiv+"\");'>";
	}
	else{
		divVar.style.display = "none";
		controlVar.innerHTML = "<img class='doormanTableVisibilidadeImg' border='0' src='images/table_show.gif' onclick='doormanTableTagMudaVisibilidadeDiv(\""+conteudo+"\",\""+control+"\",\""+rootDiv+"\");'>";
		controlVar.innerHTML += "<img class='doormanTableFecharImg' border='0' src='images/table_close.gif' onclick='doormanTableTagFecharDiv(\""+rootDiv+"\");'>";
	}		
}

function doormanTableTagFecharDiv(divId){
	var divVar = document.getElementById(divId);
	divVar.style.display = "none";
}
//################################################################################
/*
FUN??O DE FORMATA??O DE CAMPO
PARA CHAM?-LA, TEM-SE Q PASSAR 3 PAR?METROS: CAMPO, M?SCARA, EVENTO
OS PAR?METROS T?M QUE SER PASSADOS ATRAV?S DO EVENTO onKeyPress

EX:  <input type="text" name="cep" id="telefone" onKeyPress="return formata(this, '###.###.###-##', event)"> // formata o campo para cep

O CARACTER '#' DEFINE QUE S? SER? PERMITIDO N?MEROS
O CARACTER '!' DEFINE QUE ? PERMITIDO QUALQUER CARACTER

OBS: COM ESSA FUN??O, N?O ? NECESS?RIO COLOCAR A PROPRIEDADE 'MAXLENGTH' NO CAMPO

PRODUZIDO POR Tales<tales_augusto@hotmail.com>
*/
function formata(campo, mask, evt) {
 
	if(document.all) { // Internet Explorer
    	key = evt.keyCode; 
    }
    else{ // Nestcape
		key = evt.which;
    }
	if(key == 0 || key == 8 || key == 9){
 		return true;
 	}
 	stringValorAnterior = campo.value;
 	string = campo.value;
 	var selStart = 0;
 	var selEnd = 0;
 	if(window.getSelection){        
	    var selLength = campo.textLength;
	    selStart = campo.selectionStart;
	    selEnd = campo.selectionEnd;
	    var s1 = string.substring(0,selStart);
	    var s2 = string.substring(selStart, selEnd)
	    var s3 = string.substring(selEnd, selLength);
		string = s1 + String.fromCharCode(key) + s3;
    }
   	i = string.length;
    var ok = true;
    var charAt = '';
    var maskCharAt = '';    
    var stringResult = '';
    var indice = 0;
    var avaliarProximo = false;
    for(j = 0;j < i;j++){
    	charAt = string.charAt(j);
    	maskCharAt = mask.charAt(indice);
    	avaliarProximo = true;
    	if (maskCharAt != '!'){
    		if(maskCharAt != '#' && maskCharAt != '@'){
	   			stringResult = stringResult + maskCharAt;
	   			if(mask.charAt(indice) != charAt){
	   				indice++;
	   				avaliarProximo = true;
	   			}
	   			else{
		   			avaliarProximo = false;
	   			}
    		}
    		if(avaliarProximo){
   		    	maskCharAt = mask.charAt(indice);
	    		if (maskCharAt == '#') {
			    	var reg = new RegExp("[0-9]");
					stringResult = stringResult + charAt;
					ok = ok && reg.test(charAt);
				} 
				else if (maskCharAt == '@') {
			    	var reg = new RegExp("([a-z]|[A-Z])");
		   			ok = ok && reg.test(charAt);
					stringResult = stringResult + charAt;
					ok = ok && reg.test(charAt);
				}    		
    		}
    	}
    	else{
    		stringResult = stringResult + charAt;
    	}
    	indice++;	
    }
	if(ok){
		campo.value = stringResult;
	}
	else{
		campo.value = stringValorAnterior
	}
	
	if(window.getSelection && selStart != selEnd){
	   campo.selectionStart = selStart + 1;
       campo.selectionEnd = selStart + 1;
	}
	
	return false;
}

//-----------------------------------------------------
//Funcao: MascaraMoeda
//Sinopse: Mascara de preenchimento de moeda
//Parametro:
//   objTextBox : Objeto (TextBox)
//   SeparadorMilesimo : Caracter separador de mil?simos
//   SeparadorDecimal : Caracter separador de decimais
//   e : Evento
//Retorno: Booleano
//Autor: Gabriel Fr?es
//Data Cria??o: 15/02/2005
//-----------------------------------------------------
//-----------------------------------------------------
//Funcao: MascaraMoeda
//Sinopse: Mascara de preenchimento de moeda
//Parametro:
//   objTextBox : Objeto (TextBox)
//   SeparadorMilesimo : Caracter separador de mil?simos
//   SeparadorDecimal : Caracter separador de decimais
//   e : Evento
//Retorno: Booleano
//Autor: Gabriel Fr?es
//Data Cria??o: 15/02/2005
//-----------------------------------------------------
function formataDecimal(objTextBox, maxlength,e){

	var SeparadorMilesimo = '.';
	var SeparadorDecimal = ',';	
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    if (whichCode == 13 || whichCode == 0 || whichCode == 8) return true;
    key = String.fromCharCode(whichCode); // Valor para o c?digo da Chave
    if (strCheck.indexOf(key) == -1) return false; // Chave inv?lida
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);

	if(aux.length >= maxlength){
		return false;
	}


    aux += key;
    len = aux.length;
	aux2 = '';
	for (j = 0, i = len - 3; i >= 0; i--) {
		if (j == 3) {
			aux2 += SeparadorMilesimo;
			j = 0;
		}
		aux2 += aux.charAt(i);
		j++;
	}
	objTextBox.value = '';
	len2 = aux2.length;
	for (i = len2 - 1; i >= 0; i--){
		objTextBox.value += aux2.charAt(i);
	}
	if(len > 2){
		objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
	}
	else if(len == 2){
		objTextBox.value = aux.substr(0, 1) + SeparadorDecimal + aux.substr(1, len -1);
		return false;
	}
	else{
		objTextBox.value = aux.substr(0, 1);
	}
    return false;
}

//############################################################################


function trim(value) {
   var temp = value;
   var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
   if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
   //var obj = /  /g;
   //while (temp.match(obj)) { temp = temp.replace(obj, " "); }
   return temp;
}  

//-----------------------------------------------------
//Funcao: MascaraMoeda
//Sinopse: Mascara de preenchimento de moeda
//Parametro:
//   objTextBox : Objeto (TextBox)
//   SeparadorMilesimo : Caracter separador de mil?simos
//   SeparadorDecimal : Caracter separador de decimais
//   e : Evento
//Retorno: Booleano
//Autor: Gabriel Fr?es
//Data Cria??o: 15/02/2005
//-----------------------------------------------------
         
function MascaraMoeda(campooriginal,decimais)
{
  var posicaoPontoDecimal;
  var campo = '';
  var resultado = '';
  var sep,dec;
  var pos = 0;
  
  campooriginal.value = trim(campooriginal.value);
  //Desconsidera 0's ? esquerda
  while (pos < campooriginal.value.length && 
  			campooriginal.value.charAt(pos) == '0'){
				
   		pos++;
  }

  if (pos == campooriginal.value.length && pos > 0){
  		
		campooriginal.value = '0';
  }
  else{
  		if (campooriginal.value.charAt(pos) == ','){
			pos--;		
		}		
  		campooriginal.value = campooriginal.value.substring(pos);	
  }    
  
  //Retira possiveis separadores de milhar
  for (pos=0; pos < campooriginal.value.length; pos ++)
  {
    if (campooriginal.value.charAt(pos)!='.')
        campo = campo + campooriginal.value.charAt(pos);
  }    

//Formata valor monet?rio com decimais
  posicaoPontoDecimal = campo.indexOf(',');
  if (posicaoPontoDecimal != -1)
   {
   	
      sep = 0;
      for (pos=posicaoPontoDecimal-1;pos >= 0;pos--)
      {
        sep ++;
        if (sep > 3)
        {
           resultado = '.' + resultado;
           sep = 1;
        }

        resultado = campo.charAt(pos) + resultado;   
      }

      // Trata parte decimal
      if (trim(campooriginal.value) != '' && parseInt(decimais) > 0 )
      {
         resultado = resultado + ',';
      
         pos=posicaoPontoDecimal+1;
         for (dec = 1;dec <= parseInt(decimais); dec++)
         {
           if (pos < campo.length)
           {
              resultado = resultado + campo.charAt(pos);
              pos++;
           }
           else
              resultado = resultado + '0';   
         }

      } // trata decimais
   }
   // Trata valor monet?rio sem decimais
   else
   {
      sep = 0;
      for (pos=campo.length-1;pos >= 0;pos--)
      {
        sep ++;
        if (sep > 3)
        {
           resultado = '.' + resultado;
           sep = 1;
        }
        resultado = campo.charAt(pos) + resultado;   
      }
      // Trata parte decimal
      if (trim(campooriginal.value) != '' && parseInt(decimais) > 0 )
      {
         resultado = resultado + ',';
         for (dec = 1;dec <= parseInt(decimais); dec++)
         {
              resultado = resultado + '0';   
         }
      } // trata decimais
   }
   
   campooriginal.value = resultado;
}

//############# Mascara para campos num?ricos #####################
	
function mascara(event,o,f){
    v_obj=o
    v_fun=f
	
	if (event.which != 0){
    	setTimeout("execmascara()",0)
	}
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function campoNumerico(v){	
	return v.replace(/\D/g,"")
}

function campoMonetario(v){
	return v.replace(/[^0-9,]/g,"")	
}
//############# Fim m?scara num?rica ##############################
